package com.xing.binbackend.pattern.responsibility.acore;

// 1. 抽象处理者
public abstract class Handler {
    protected Handler next;  // 关键点1：持有下一个处理者的引用

    public Handler setNext(Handler next) {  // 关键点2：链式设置方法
        this.next = next;
        return next;
    }

    public abstract void handleRequest(Request request);  // 关键点3：处理方法

    protected void passToNext(Request request) {  // 关键点4：传递机制
        if (next != null) {
            next.handleRequest(request);
        }
    }
}
